package tree;

/**
 * @Author wangj
 * @Date 2022/4/27 23:23
 */
public class BinaryTree {

    private HeroNodeTree root;

    public void setRoot(HeroNodeTree root) {
        this.root = root;
    }

    public void perOrder(){
        if(this.root != null){
            this.root.perOrder();
        }
    }

    public void infixOrder(){
        if(this.root != null){
            this.root.infixOrder();
        }
    }

    public void postOrder(){
        if(this.root != null){
            this.root.postOrder();
        }
    }

    /**
     * 前序查找
     * @param no
     * @return
     */
    public HeroNodeTree preSearchNode(int no){
        if(this.root == null){
            System.out.println("树为空");
            return null;
        }
        return this.root.perSearchNode(no);
    }

    /**
     * 中序查找
     * @param no
     * @return
     */
    public HeroNodeTree infixSearchNode(int no){
        if(this.root == null){
            System.out.println("树为空");
            return null;
        }
        return this.root.infixSearchNode(no);
    }

    /**
     * 前序查找
     * @param no
     * @return
     */
    public HeroNodeTree postSearchNode(int no){
        if(this.root == null){
            System.out.println("树为空");
            return null;
        }
        return this.root.postSearchNode(no);
    }

    public void delNode(int no){
        if(this.root == null){
            return;
        }
        if(this.root.getId() == no){
            this.root = null;
        }
        assert this.root != null;
//        this.root.delNode(no);
        this.root.delReplaceNode(no);
    }


}
